Trade order submission for electronic trading

ABSTRACT

Various systems and methods for trade order processing in an electronic trading environment are provided. The order processing includes initiating a first thread of instructions at a computing device to send a first trade order onto an electronic exchange. However, if one or more trade orders are identified during the process to send the first trade order, then the one or more orders are queued. When the first trade order is sent to the electronic exchange, then a second thread of instructions is initiated at the computing device to send the queued one or more trade orders (substantially together, if there is more than one) on to the electronic exchange.

CROSS REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.16/891,392, filed Jun. 3, 2020, which is a continuation of U.S. patentapplication Ser. No. 15/691,324, filed Aug. 30, 2017, now U.S. Pat. No.10,713,719, which is a continuation of U.S. patent application Ser. No.14/061,056, filed Oct. 23, 2013, now U.S. Pat. No. 9,779,456, which is acontinuation of U.S. patent application Ser. No. 13/765,940, filed Feb.13, 2013, now U.S. Pat. No. 8,595,127, which is a continuation of U.S.patent application Ser. No. 12/410,232, filed Mar. 24, 2009, now U.S.Pat. No. 8,401,952, entitled “Trade Order Submission for ElectronicTrading,” the contents of each of which are fully incorporated herein byreference for all purposes.

BACKGROUND

The present invention is directed towards electronic trading. Moreparticularly, embodiments of the present invention are directed towardstrade order submission.

An electronic trading system provides for electronically matching ordersto buy and sell items to be traded. The items may include, for example,stocks, options, and commodities. Typically, an electronic exchange inthe electronic trading system is used to match the orders. In addition,the electronic exchange provides market data to various client devicesin the electronic trading system used by traders to place the orders.For example, the electronic exchange may provide market data such asprices for various items available for trading and trade confirmationsindicating what trades have occurred at what quantities and/or prices.An example of an electronic exchange is the CME® Globex® electronictrading platform, which is offered by the Chicago Mercantile Exchange(CME).

Oftentimes, the matching algorithm at the electronic exchange gives somelevel of priority to the first person to place an order. As such, tradeorder submission by a particular computing device on behalf of a tradercan play a crucial part in electronic trading.

SUMMARY

Various embodiments that are described herein include systems andmethods for trade order processing in an electronic trading environment.According to one or more embodiments, a first thread of instructions isinitiated at a computing device to send a first trade order to anelectronic exchange. One or more trade orders to be sent to theelectronic exchange is identified subsequent to initiating the firstthread of instructions. The one or more trade orders are queued at thecomputing device prior to sending the plurality of trade orders to theelectronic exchange. Initiating a second thread of instructions at thecomputing device to send the one or more trade orders substantiallytogether to the electronic exchange subsequent to identifying the firstorder is sent. Flag bits may also be set and used to identify whenorders are in the process of being sent and when orders are queued.

BRIEF DESCRIPTION OF THE DRAWINGS

Example embodiments are described herein with reference to the followingdrawings.

FIG. 1 illustrates an example electronic trading system in which certainembodiments may be employed.

FIG. 2 is a diagram showing a sequence of events according to certainembodiments.

FIG. 3 illustrates a flowchart of a process for sending an orderaccording to certain embodiments.

FIG. 4 illustrates a flowchart of a process for sending queued ordersaccording to certain embodiments.

The foregoing will be better understood when read in conjunction withthe drawings which show various embodiments. The drawings are for thepurpose of illustrating certain embodiments, but it is understood thatthe present invention is not limited to the arrangements andinstrumentality shown in the drawings.

DETAILED DESCRIPTION

Various systems and methods are described herein for trade orderprocessing. The order processing includes initiating a first thread ofinstructions at a computing device to send a first trade order to anelectronic exchange. However, if one or more trade orders are identifiedduring the process to send the first trade order, then the one or moreorders are queued. When the first trade order is sent to the electronicexchange, then a second thread of instructions is initiated at thecomputing device to send the one or more trade orders (substantiallytogether, if there is more than one) on to the electronic exchange.

FIG. 1 illustrates an example electronic trading system 100 in whichcertain embodiments may be employed. The system 100 includes clientdevice 102, gateway device 104, server side automation device (“SSA”)106, and electronic exchange 108. According to this example, clientdevice 102 is in communication with gateway 104. Gateway 104 is incommunication with electronic exchange 108. SSA 106 may be incommunication with client device 102 and gateway 104.

According to some operations, client device 102 may be utilized to sendorders to buy or sell tradeable objects (e.g., trade orders) listed atexchange 108. Orders to be placed at exchange 108 via client device 102are sent through gateway 104. In addition, market data may be sent fromexchange 108 through gateway 104 to client device 102. The user mayutilize client device 102 to monitor the market data and base decisionsto send an order for a tradeable object. Trading decisions at clientdevice 102 may be manual or automated.

According to some operations, SSA 106 may be utilized to send orders tobuy or sell tradeable objects at exchange 108 on behalf of the user ofclient device 102. Orders to be placed at exchange 108 via SSA 106 aresent through gateway 104. Market data may be sent from exchange 108through gateway 104 to SSA 106. SSA 106 may monitor the market data andbase decisions to send an order for a tradeable object. Tradingdecisions at SSA 106 are generally automated, but it may be possible formanual intervention by a user of client device 102, if it is soprogrammed.

Client device 102 may include one or more electronic computing devicessuch as a hand-held device, laptop, personal computer, workstation witha single or multi-core processor, server with multiple processors,and/or cluster of computers, for example. A present day commercialexample might include a computing device that utilizes the Windows XPProfessional operating system and has at least 2 GB of memory, twodual-core or two quad-core processors, a network card, and at least 10GB of hard drive space to accommodate software.

Client device 102 may also be configured to run one or more tradingapplications. The trading application(s) may, for example, processmarket data by arranging and displaying the market data in trading andcharting windows. This processing may be based on user preferences, forexample. In addition to manual style trading tools, the tradingapplication(s) may include an automated trading tool such as anautomated spread trading tool, for example. In another example, clientdevice 102 may be a computing system running a copy of X_TRADER™, anelectronic trading platform provided by Trading TechnologiesInternational, Inc. of Chicago, Ill. Regardless of the type of tradingapplication, client device 102 may be configured to send orders to buyand sell tradeable objects listed at exchange 108. Client device 102 mayalso be configured to cancel orders, change orders, and/or queryexchange 108, for example. Client device 102, including the one or moretrading applications, may also be configured to operate with one or moretrading application at SSA 106, more of which is described below.

Orders sent by client device 102 may be sent at the request from a usermanually or automatically, for example. For example, a trader mayutilize an electronic trading workstation to place an order for aparticular tradeable object, manually providing various parameters forthe order such as an order price and/or quantity. In another example, anautomated trading tool may calculate one or more parameters for an orderand automatically send the order.

In certain embodiments, client device 102 includes a user interface. Theuser interface may include one or more display devices for presenting atext-based or graphical interface to a user, for example. For example,the display devices may include computer monitors, hand-held devicedisplays, projectors, and/or televisions. The user interface may be usedby the user to specify or review parameters for an order. The userinterface may include one or more input devices for receiving input froma user, for example. For example, the input devices may include akeyboard, trackball, two or three-button mouse, and/or touch screen. Theuser interface may include other devices for interacting with a user.For example, information may be aurally provided to a user through aspeaker and/or received through a microphone.

In certain embodiments, orders from client device 102 are sent on toexchange 108 through gateway 104. Client device 102 may communicate withgateway 104 using a local area network, a wide area network, a virtualprivate network, a T1 line, a T3 line, a point-of-presence, and/or theInternet, for example.

Server side automation (“SSA”) 106 may include one or more electroniccomputing platforms such as a personal computer, workstation with asingle or multi-core processor, server with multiple processors, and/orcluster of computers, for example. A present day commercial examplemight include a computing device that utilizes the Windows 2003 Server(Server Pack 2) operating system and has at least 4 GB of memory, twodual-core or two quad-core processors, one or more network cards, and atleast 30 GB of hard drive space to accommodate software.

In certain embodiments, SSA 106 is used to implement automated orsemi-automated trading programs. Orders may be sent directly from SSA106 to exchange 108 through gateway 104. Orders may also be sent fromanother computing device to exchange 108 via instructions from SSA, forexample. In certain embodiments, SSA 106 is configured to implement anautomated or semi-automated trading program on behalf of a user ofclient device 102. An example trading application that may run on SSA106 is an automated spread trading tool like that disclosed in U.S. Pat.No. 7,437,325, the contents of which are incorporated herein byreference. The commercial embodiment of an automated spread trading toolis Autospreader®, which is offered by Trading TechnologiesInternational. The Autospreader® can be configured to operate at clientdevice 102, SSA 106, or both client device 102 and SSA 106, for example.

In certain embodiments, SSA 106 is physically located at the same siteas client device 102. In certain embodiments, SSA 106 is physicallylocated at the same site as exchange 108. In certain embodiments, SSA106 is collocated with gateway 104. In certain embodiments, SSA 106 isphysically located at a site separate from both the client device 102and the exchange 108. In certain embodiments, regardless of itslocation, client device 102 and SSA 106 may be considered part of the“client side” of system 100, because SSA 106 may be operating on behalfof a user at client device 102, for example.

Gateway 104 may include one or more electronic computing platforms suchas a personal computer, workstation with a single or multi-coreprocessor, server with multiple processors, and/or cluster of computers,for example. In certain embodiments, gateway 104 is physically locatedat the same site as the client device 102. In certain embodiments,gateway 104 is physically located at the same site as exchange 108. Incertain embodiments, gateway 104 is with collocated with SSA 106. Incertain embodiments, gateway 104 is physically located at a siteseparate from both the client device 102 and the exchange 108.

In certain embodiments, gateway 104 communicates with client device 102and/or SSA 106 using a local area network, a wide area network, avirtual private network, a T1 line, a T3 line, a point-of-presence,and/or the Internet, for example.

Gateway 104 is adapted to communicate with client device 102 andexchange 108. Gateway 104 facilitates communication between clientdevice 102 and/or SSA 106 and exchange 108. For example, gateway 104 mayreceive orders from client device 102 and/or SSA 106 and transmit theorders to exchange 108. As another example, gateway 104 may receivemarket data from exchange 108 and transmit the market data to clientdevice 102 and/or SSA 106. Gateway 104 may be used to implement certainembodiments of the present invention.

In certain embodiments, gateway 104 performs processing on datacommunicated between client device 102 and/or SSA 106 and exchange 108.For example, gateway 104 may process an order received from clientdevice 102 and/or SSA 106 into a data format acceptable by exchange 108.Similarly, gateway 104 may transform market data in an exchange-specificformat received from exchange 108 into a format understood by clientdevice 102 and/or SSA 106. The processing of gateway 104 may alsoinclude tracking orders from client device 102 and/or SSA 106 andupdating the status of the order based on fill confirmations receivedfrom exchange 108, for example. As another example, gateway 104 maycoalesce market data from exchange 108 and provide it to client device102 and/or SSA 106.

Exchange 108 is configured to match orders to buy and sell tradeableobjects. The tradeable objects may be listed for trading at exchange108. The orders may include orders received from the client device 102,SSA 106, or both, for example. Orders may be received from client device102, SSA 106, or both through gateway 104, for example. In addition, theorders may be received from other devices in communication with exchange108. That is, typically exchange 108 will be in communication with avariety of other client devices (which may be similar to client device102) or other computing devices that also provide orders to be matched.As previously discussed, an example of exchange 108 is the CME®,headquartered in Chicago, Ill.

Exchange 108 is configured to provide market data. The market data maybe provided to the client device 102, for example. The market data maybe provided to client device 102, SSA 106, or both through gateway 104,for example. The market data may include data that represents the insidemarket, for example. The inside market is the lowest sell price (alsoreferred to as the “best ask”) and the highest buy price (also referredto as the “best bid”) at a particular point in time. The market data mayalso include market depth. Market depth refers to the quantitiesavailable at other prices away from the inside market. In certainembodiments, market depth is provided for all price levels. In certainembodiments, market depth is provided for less than all price levels.For example, market depth may be provided only for the first five pricelevels on either side of the inside market. The market data may alsoinclude information such as the last traded price (LTP), the last tradedquantity (LTQ), and order fill information.

In certain embodiments, system 100 includes more than one client device102. For example, multiple client devices similar to the client device102, discussed above, may be in communication with gateway 104 and/orSSA 106 to send orders to the exchange 108. Similarly, in certainembodiments, system 100 includes more than one SSA 106.

In certain embodiments, system 100 includes more than one gateway 104.For example, multiple gateways similar to the gateway 104, discussedabove, may be in communication with the client device 102 and/or SSA 106and the exchange 104. Such an arrangement may be used to provideredundancy should gateway 104 fail, for example. System 100 might alsoinclude additional gateways to facilitate communication between clientdevice 102 and/or SSA 106 and other exchanges besides exchange 108.

In certain embodiments, system 100 includes more than one exchange 108.For example, the gateway 104 may be in communication with multipleexchanges similar to the exchange 108, discussed above. Such anarrangement may allow client device 102 and/or SSA 106 to trade at morethan one exchange through gateway 104, for example.

In certain embodiments, gateway 104 is part of client device 102 and/orSSA 106. For example, the hardware/software components of gateway 104may be part of the same computing platform as the client device 102and/or SSA 106. As another example, the functionality of gateway 104 maybe performed by components of the client device 102 and/or SSA 106. Incertain embodiments, gateway 104 is not present. Such an arrangement mayoccur when the client device 102 and/or SSA 106 does not need to utilizegateway 104 to communicate with exchange 108, for example. For example,if client device 102 and/or SSA 106 have been adapted to communicatedirectly with exchange 108.

While not shown for the sake of clarity, in certain embodiments, system100 may include other devices that are specific to the communicationsarchitecture such as middleware, firewalls, hubs, switches, routers,exchange-specific communication equipment, modems, security managers,and/or encryption/decryption devices.

FIG. 2 is a diagram showing a sequence of events according to exampleembodiments. Particularly, the diagram illustrates four computer relatedthreads, which include three similar operating threads (1, 2, and 3) anda queuing thread. Each of the threads executes instructions to carry outan operation. For example, the first, second, and third threadsrepresent instructions to send an order to the electronic exchange. Thefirst through third threads may also execute instructions to generate anorder, such as by a trading application running on a particular thread,for example. Generating an order might include generating an order priceand/or an order quantity, among other things. The queuing threadrepresents a set of instructions that empties the orders in the queue bysending the one or more queued orders to the electronic exchange. Incertain embodiments, each thread corresponds to a dedicated processor,though having a dedicated processor run each thread is not necessary. Itis also understood that there could be more or less threads than thatshown in the diagram.

According to FIG. 2, order 202 is ready to be sent to the electronicexchange. The time it takes to send the trade order is represented bythe brackets at 208. This “time to send” represents the time it takes toplace the order message on the actual data channel to the exchange(and/or gateway). In a present day example, it might take 100microseconds or less to place the order message on the actual datachannel, though it could take more or less time depending on thecomputing system. Regardless of the amount of time it takes to send theorder, the process of sending the order starts at a time indicated by210 and ends at a time indicated by 212.

According to FIG. 2, no other order was ready to be sent at 210. Assuch, the system initiated the process to send order 202 at a timereferenced at 210. During the time to send order 202, another orderrepresented by order 204 was ready to be sent. In other words, after theprocess to send order 202 was initiated (and before order 202 was sentat 212), order 204 was generated and ready to be sent to the electronicexchange. As a result of order 202 being in the process to send, order204 is moved to the queuing thread.

Also according to FIG. 2, another order represented by order 206 wasready to be sent. In other words, order 206 is ready to be sent to theelectronic exchange. However, as a result of order 204 being in theprocess to send, order 206 is moved to the queuing thread. In certainembodiments, order 204 and order 206 are collected into a batch, suchthat when the time is ready to send an order that is different thanorder 202, the two orders (order 204 and order 206) can be sent togetherto the electronic exchange. In other words, the two orders are sent viaa single message on to the electronic exchange via gateway 106 which mayimprove the efficiency. In certain embodiments, the two orders are sentsubstantially simultaneously on to the electronic exchange via gateway106.

Looking at FIG. 2, once order 202 is sent to the electronic exchange(e.g., the process of placing the order message onto the channel iscomplete), which is represented at time 212, then the process of sendingorders 204 and 206 can be initiated. The time it takes to send tradeorders 204 and 206 is represented by the bracket at 214. The process ofsending the orders starts at a time indicated by 216 and ends at a timeindicated by 218. Time to send the batched orders may be similar to thetime it takes to send a single order (e.g., 100 microseconds or less,such as described above), though it could take more or less time.

As described above, in certain embodiments the queued orders arecollected on the order queue into a batch. There may be limits on howmany order messages can be collected into a single batch. For example,“30” order messages might be collected into a single batch, though moreor less could be collected into a batch. If there are more queued ordersthat can fit in a single batch, then another batch is collected, and soon until the queue is empty. However, looking to the example in FIG. 2,there are only two orders ready to be sent to the exchange and bothorders can be sent after time 212. As such, there is no need to wait formore orders to be queued to meet the order limits of a batch.

FIG. 3 illustrates a flowchart 300 of a process for sending an orderaccording to certain embodiments.

At block 302, an order is identified. For ease of explanation, thisorder is referred to as a “first order.” Looking back to FIG. 2, order202 may be considered the “first order,” for example, in the context ofthe example in that figure. In some embodiments, the first order may begenerated according to a trading strategy, for example, on the samethread that the order is sent. In other embodiments, the first order maybe generated according to a trading strategy on a different thread atthe same computing device. In other embodiments, the first order may begenerated according to a trading strategy at a different computingdevice. Regardless of where the order is generated, the order isidentified per block 302.

At block 304, the system determines whether the first order is a hedgeorder. While this block may be removed from the flowchart withoutaffecting the later blocks, it provides an option to send those ordersthat have a certain level of importance to be quickly sent to theexchange, without the risk of being queued. A hedge order is an orderthat might possess a higher level of importance, and therefore thesystem could be programmed per block 304 to send the order to theexchange as soon as possible. The designated level of importance couldbe a user-selected option or hardcoded into the system, for example.

At block 306, if the order is a hedge order, or an order that meets thedesignated level of importance, then the process to send the order isinitiated immediately, if there are no other orders in the process ofbeing sent, or at the next available time. So, for example, if order 204in FIG. 2 was a hedge order, then instead of being queued as shown inthe figure, the process for sending the order 204 would start when order202 was sent (e.g., around the time indicated by 212), which representsthe next available time. If the order is sent, then a first flag bit maybe set to “1” to indicate that an order is in the process of being sent.

At block 308, if the first order is not a hedge order, or an order thatmeets the designated level of importance, then the system determineswhether another order is being sent. In the example shown in FIG. 2,order 202 is in the process of being sent during 210 and 212, because noother order was being sent at, or approximate, to the time representedby 210. However, thread 2 cannot begin to send order 204, because order202 is already in the process of being placed on the channel. If anorder is in the process of being sent, then the first flag bit may beset to “1” to indicate that an order is in the process of being sent.Then, for example, the flag bit may be set to “1” for the durationbetween 210 and 212. During that time, threads 2 and 3 cannot begin theprocess to send orders 204 and 206.

At block 310, if another order is in the process of being sent, orequivalently the first flag bit is set to “1,” then the order is queuedin a data structure in the system. Looking again to FIG. 2, orders 204and 206 are queued in a data structure, because order 202 is in theprocess of being sent to the exchange.

At block 312, if there are other queued orders, then the order is queuedin a data structure in the system. If an order is queued, then a secondflag bit may be set to “2” (the second flag bit could also be set to“1,” for example, given that the second flag bit is referring to adifferent flag bit than the first flag bit, but the second flag bit isset to “2” in these examples for ease of illustrating the variouspossible flag bits). Using the example shown in FIG. 2, when order 204is identified in the order queue, then the second flag bit would be setto “2,” indicating that an order is queued.

At block 316, if there are no queued orders, then the thread thatidentified the first order can initiate instructions to send the order.For example, order 202 is in the process of being sent and a flag bitwas set to “1” for the duration of the time to send. The flag bit isreset to “0,” for example, when order 202 is sent.

FIG. 4 illustrates a flowchart of a process for sending queued ordersaccording to certain embodiments.

At block 402, a queued order is identified. Looking to FIG. 2, twoqueued orders are ultimately identified. In addition, as discussedabove, the system may be configured to recognize that at least one orderis queued when the second flag bit is set to “2.”

At block 404, it is determined whether a thread is in the process ofsending an order. Alternatively, it is determined whether the first flagbit set to “1.” If it is, then the queuing thread will check again.

At block 406, if it is determined that a thread is not in the process ofsending an order (e.g., the first flag bit is “0” or reset), then one ormore orders may be sent in a batch to the electronic exchange. Accordingto FIG. 2, the queuing thread initiates the process to send orders 202and 204 at 216, which is a time equal to or shortly after 212.

At block 408, it is determined whether the queue is empty. If the queueis not empty, then the system process goes back to block 406 until thesecond flag bit is reset (the queue is empty). Alternatively, if thequeue is not empty, then the system process is configured to go back toblock 404. By going to block 404, the system determines whether anotherorder is in the process of being sent. For example, once the first batchleaves the order queue, it may be possible according to an alternativeprocess for a different thread to initiate the sending process(especially an order having a designated level of importance).Consequently, according to the alternative embodiment the queuing threadprocess could not move to block 406 until the first flag bit is reset.Once the queue is empty, then the second flag bit can be reset per block410.

One or more of the blocks of the flowcharts discussed above may beimplemented alone or in combination in various forms in hardware,firmware, and/or as a set of instructions in software, for example.Certain embodiments may be provided as a set of instructions residing ona computer-readable medium, such as a memory, hard disk, CD-ROM, DVD,and/or EPROM, for execution on a computer or other processing device.

Certain embodiments may omit one or more of these steps and/or performthe steps in a different order than the order listed. For example, somesteps may not be performed in certain embodiments. As a further example,certain steps may be performed in a different temporal order, includingsimultaneously, than listed above.

Additionally, as described above, various computing devices may beconfigured to implement various aspects described herein. For example,the SSA 106 may be configured to implement the embodiments describedherein. Thus, for example, if a software trading application at SSA 106generated a number of trade orders at substantially the same time, thenthe embodiments described herein may be utilized to provide intelligenttrade order submission amongst those trade orders. In another example,the client device 202 may be configured to implement the embodimentsdescribed herein. Alternatively, a combination of the client device 202and SSA 106 may be configured to jointly implement the embodimentsdescribed herein.

While the invention(s) has been described with reference to certainembodiments, it will be understood by those skilled in the art thatvarious changes may be made and equivalents may be substituted withoutdeparting from the scope of the invention. In addition, manymodifications may be made to adapt a particular situation or material tothe teachings of the invention without departing from its scope.Therefore, it is intended that the invention not be limited to theparticular embodiment disclosed, but that the invention will include allembodiments falling within the scope of the appended claims.

1. (canceled)
 2. A computer readable medium having stored thereininstructions executable by a processor, including instructionsexecutable to: receive a second order message in a data structure in aqueuing thread, wherein the second order message is received from asecond thread, wherein the second order message is received in responseto the second order message being ready to be sent while a first ordermessage is being sent in a first thread, wherein the second thread doesnot wait to process other instructions until a next available time tosend the second order message after moving the second order message,wherein the queuing thread is different than the first thread and thesecond thread; receive a third order message in the data structure inthe queuing thread, wherein the third order message is received from athird thread, wherein the third order message is received in response tothe third order message being ready to be sent while the first ordermessage is being sent, wherein the third thread does not wait to processother instructions until the next available time to send the third ordermessage after moving the third order message, wherein the third threadis different than the first thread; and initiate sending the secondorder message and the third order message after sending or the firstorder message is complete.
 3. The computer readable medium of claim 2,wherein the first order message is generated in the first thread.
 4. Thecomputer readable medium of claim 2, wherein initiation of generation ofat least one of the second order message and the third order messageoccurs prior to initiation of sending the first order message.
 5. Thecomputer readable medium of claim 2, wherein initiation of generation ofat least one of the second order message and the third order messageoccurs after initiation of sending the first order message.
 6. Thecomputer readable medium of claim 2, wherein at least one of the firstorder message, the second order message, and the third order message areprovided from a client device.
 7. The computer readable medium of claim2, wherein the second thread and the third thread are different threads.8. The computer readable medium of claim 2, wherein the second threadand the third thread are the same thread.
 9. The computer readablemedium of claim 2, wherein the data structure in the queuing thread is aqueue.
 10. The computer readable medium of claim 2, further includinginstructions executable to: generate a batch message including thesecond order message and the third order message, wherein initiatingsending the second order message and the third order message includesinitiating sending the batch message.
 11. The computer readable mediumof claim 2, wherein the second order message and the third order messageare sent together.
 12. The computer readable medium of claim 2, whereinthe processor is included in one of the group consisting of: (1) aclient device, (2) a server-side device, and (3) a gateway.